package com.liangdemo.web.thread;

/**
 * 多线程同步
 * 使用notify和wait方法
 * 使用线程同步锁
 */
public class Notify_Wait {
    public static void main(String[] args) {

        final Object o = new Object();//创建一个条件，相当于锁


        String str1 = "1234567890";
        String Str2 = "ABCDEFGHRJK";
        String[] array1 = str1.split("");
        String[] array2 = Str2.split("");
        //创建t1线程
        new Thread(() -> {
            synchronized (o) {
                for (String a1 : array1) {
                    System.out.print(a1);
                    try {
                        o.notify();//叫醒对方
                        o.wait();//让条件，当前线程休息
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                o.notify();//循环完成之后必须加，在完成之后叫醒对方
            }
        }, "t1").start();


        //创建t2线程
        new Thread(() -> {
            synchronized (o) {
                for (String a2 : array2) {
                    System.out.print(a2);
                    try {
                        o.notify();
                        o.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                o.notify();
            }
        }, "t2").start();

    }
}
